A storage system is a processing system adapted to store and retrieve information/data on storage devices (such as disks). The storage system includes a storage operating system that implements a file system to logically organize the information as a hierarchical structure of directories and files on the storage devices. Each file may be implemented as a set of blocks configured to store data/information (such as text), whereas each directory may be implemented as a specially-formatted file in which information about other files and directories are stored.
The storage operating system generally refers to the computer-executable code operable on a storage system that manages data access and access requests and may implement file system semantics in implementations involving storage systems. In this sense, the Data ONTAP® storage operating system, available from Network Appliance, Inc. of Sunnyvale, Calif., which implements a Write Anywhere File Layout (WAFL®) file system, is an example of such a storage operating system implemented as a microkernel within an overall protocol stack and associated storage. The storage operating system can also be implemented as an application program operating over a general-purpose operating system, such as UNIX® or Windows®, or as a general-purpose operating system with configurable functionality, which is configured for storage applications as described herein.
A storage system's storage is typically implemented as one or more storage volumes that comprise physical storage devices (such as disks), defining an overall logical arrangement of storage space. Available storage system implementations can serve a large number of discrete volumes. A storage volume is “loaded” in the storage system by copying the logical organization of the volume's files, data, and directories, into the storage system's memory. Once a volume has been loaded in memory, the volume may be “mounted” by one or more users, applications, devices, and the like, that are permitted to access its contents and navigate its namespace.
A storage system may be configured to allow clients (e.g., users, server systems, applications, devices, etc.) to access its contents, for example, to read or write data to the storage system. The client may comprise an application executing on a server system that “connects” to the storage system over a computer network, such as a shared local area network (LAN), wide area network (WAN), or virtual private network (VPN) implemented over a public network such as the Internet. Communications between the storage system and its clients are typically embodied as packets sent over the computer network. A client may send an access request (read or write request) to the storage system for accessing particular data stored on the storage system. Each client may request the services of the storage system by issuing file-system protocol messages formatted in accordance with a conventional file-system protocol, such as the Common Internet File System (CIFS), Network File System (NFS) protocol, Fibre Channel Protocol (FCP), Internet Small Computer System Interface (iSCSI), or Storage Area Network (SAN) access.
An entity/organization may maintain and operate a set of storage system sites distributed through different geographic regions. Each site may include a storage system (with storage devices) connected with server systems that send access requests to the storage system. In some situations, the distributed sites each access (read or write to) a common set of data (referred to as a “shared data set”) that is stored at one of the sites. Typically, the site that stores the shared data set (referred to as the “owner site”) is the only site that may directly perform write operations on the shared data set (whereas the “remote sites” must write to the shared data set by proxy through the owner site). For example, an entity may have storage system sites in India and the U.S.A. that access a shared data set that is stored at the India site (the owner site).
Remote sites, however, may experience substantial latency/delay when reading from or writing to the shared data set stored at the owner site depending on the distance to the owner site and the size of the data being read or written. As such, there is a need for methods and apparatus for reducing the latency of read and write requests in distributed storage system sites having a shared data set.